package com.meessiom.train.crm.order.service;


import com.meessiom.train.crm.order.model.OrderInfo;
import com.meessiom.train.crm.order.repository.OrderInfoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class OrderInfoService {

    @Autowired
    private OrderInfoRepository orderInfoRepository;

    public List<OrderInfo> getAllOrders()
    {
        return orderInfoRepository.findAll();
    }
    /**
     * 创建订单
     *
     * 该方法负责将给定的OrderInfo对象保存到数据库中
     * 它主要用于处理订单创建流程，将订单信息持久化
     *
     * @param orderInfo 要创建的订单信息，包含订单的各种详细信息
     * @return 返回保存后的订单信息，包括生成的唯一订单标识等
     */
    public OrderInfo createOrder(OrderInfo orderInfo)
    {
        return orderInfoRepository.save(orderInfo);
    }

    /**
     * 删除指定的订单
     *
     * 通过订单的ID来删除订单，并返回被删除的订单信息
     * 注意：此方法假设调用前已经进行了适当的验证，例如订单ID存在性检查
     *
     * @param id 订单的唯一标识符
     * @return 被删除的订单信息
     */
    public OrderInfo deleteOrder(long id)
    {
        // 根据订单ID查询订单信息，由于订单存在性已在方法外部验证，这里直接使用get()获取Optional对象
        OrderInfo orderInfo = orderInfoRepository.findById(id).get();

        // 调用Repository的方法删除指定ID的订单
        orderInfoRepository.deleteById(id);

        // 返回被删除的订单信息
        return orderInfo;
    }

}
